package main

import "fmt"

/**
切片:数组的抽象，可以改变长度
定义：
var identifier []type
var slice1 []type = make([]type, len)
*/
func main() {
	var slice1 []int
	fmt.Println(slice1)
	if slice1 == nil {
		fmt.Println("slice1 is nil")
	}
	slice1 = make([]int, 5)

	for i, item := range slice1 {
		fmt.Println(item) // 0 0 0 0 0
		slice1[i] = i
	}

	fmt.Println(slice1)

	// 可以使用创建数组的方式对切片进行初始化:
	// 切片名称[low: high: max]
	// low: 起始下标位置
	// high: 结束下标位置    len = high - low
	// max: 容量    cap = max - low
	arr := [6]int{1, 2, 3, 4, 5, 6}
	s := arr[1:3:5]
	fmt.Println(s)

	arr1 := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	s1 := arr1[1:5:8] //[2 3 4 5]
	fmt.Println(s1)
	fmt.Println("len(s) = ", len(s1)) // len(s) =  4
	fmt.Println("cap(s) = ", cap(s1)) // cap(s) =  7

	s2 := s[:6]
	fmt.Println(s)                     // [2 3 4 5 6 7]
	fmt.Println("len(s2) = ", len(s2)) // len(s2) =  6
	fmt.Println("cap(s2) = ", cap(s2)) // cap(s2) =  7
}
